package cn.tedu.hm.service;

import cn.tedu.hm.pojo.dto.OrderMakeNewDTO;
import cn.tedu.hm.pojo.dto.OrderUpdateDTO;
import cn.tedu.hm.pojo.vo.OrderListItemVO;
import cn.tedu.hm.pojo.vo.OrderStandardVO;
import cn.tedu.hm.wep.JsonPage;

/**
 * 说明:
 *
 * @ author: WeiZhen
 * @date: 2023/3/8
 **/
public interface IOrderService {
    //一天的临界时间，超过5点的订单到第二天12点退房，否则当天12点退房
    Integer BETWEEN_TIMES = 5;
    //订单状态：待入住
    Integer WILL_LIVE = 0;
    //订单状态：已入住
    Integer ALREADY_LIVE = 1;
    //订单状态：已完成
    Integer ALREADY_OK = 2;

    /**
     * 根据身份证查询订单
     * */
    void getOrderByCardNumber(String cardNumber, String otherCardNumber);

    /**
     * 生成订单
     * */
    void makeNew(OrderMakeNewDTO orderMakeNewDTO);

    /**
     * 删除订单
     * */
    void deleteById(Long id);

    /**
     * 修改订单
     */
    void updateInfoById(Long id, OrderUpdateDTO orderUpdateDTO);

    /**
     * 查询订单列表
     */
    JsonPage<OrderListItemVO> list(Integer page, Integer pageSize);

    /**
     * 根据名字查询订单列表
     */
    JsonPage<OrderListItemVO> getListByName(String name, Integer page, Integer pageSize);

    /**
     * 根据电话查询订单列表
     */
    JsonPage<OrderListItemVO> getListByPhone(String phone, Integer page, Integer pageSize);
    /**
     * 根据名字查询订单列表
     */
    JsonPage<OrderListItemVO> getHistoryListByName(String name, Integer page, Integer pageSize);

    /**
     * 根据电话查询订单列表
     */
    JsonPage<OrderListItemVO> getHistoryListByPhone(String phone, Integer page, Integer pageSize);

    /**
     * 根据id查询
     */
    OrderStandardVO getStandardById(Long id);
    /**
     * 查询历史订单
     */
    JsonPage<OrderListItemVO> listHistory(Integer page, Integer pageSize);
}
